package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.Date;
import java.util.List;

/**
 * 车辆进出城分析
 */
public interface DubboAnalyzeInoutService {
    /**
     * 日均出入城流量，及与昨天数据的对比
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @return FlowInoutCompDto
     */
    public ResultPojo avgFlowInoutPerDay(String token, Date startDay, Date endDay, String licenseType, List<String> points);

    /**
     * 出入城总流量
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @return FlowInoutDto
     */
    public ResultPojo sumFlowInout(String token, Date startDay, Date endDay, String licenseType, List<String> points);


    /**
     * 进出城 流量趋势统计  时间粒度小时
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @return List<FlowInoutDto>
     */
    public ResultPojo trendFlowInoutByHour(String token, Date startDay, Date endDay, String licenseType, List<String> points);

    /**
     * 进出城 流量趋势统计  时间粒度天
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @return List<FlowInoutDto>
     */
    public ResultPojo trendFlowInoutByDay(String token, Date startDay, Date endDay, String licenseType, List<String> points);

    /**
     * 按号牌类型统计出入城流量
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @param inOrOut
     * @return  List<FlowInoutByLicenseTypeDto>
     */
    public ResultPojo flowInoutByLicenseType(String token, Date startDay, Date endDay, String licenseType, List<String> points, int inOrOut);

    /**
     * 按车辆属地统计出入城流量
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @param inOrOut
     * @return  List<FlowInoutByLicenseRegionDto>
     */
    public ResultPojo flowInoutByLicenseRegion(String token, Date startDay, Date endDay, String licenseType, List<String> points, int inOrOut);

    /**
     * 按车辆类型统计出入城流量
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @param inOrOut
     * @return  List<FlowInoutByVehTypeDto>
     */
    public ResultPojo flowInoutByVehType(String token, Date startDay, Date endDay, String licenseType, List<String> points, int inOrOut);

    /**
     * 按点位统计出入城流量
     * @param startDay 统计开始时间
     * @param endDay 统计结束时间
     * @param licenseType 号牌类型
     * @param inOrOut
     * @return  List<FlowInoutByPointDto>
     */
    public ResultPojo flowInoutByPoint(String token, Date startDay, Date endDay, String licenseType, int inOrOut);
}
